"""
匹配单个字符：
。   任意单个字符
/d  任意单个数字  /D 除数字外的任意单个字符
/w  任意单个字母    /W 除字母外的任意单个字符
/s  空格          /S 除空格外的其他任意单个字符

匹配出现次数
*   任意次数
？  出现0次或1次
+   出现1次或多次
{3} 精准匹配
{2，}至少2次
{2，3}出现2到3次

匹配出现位置
^   开头
$   结尾
^$  空行
"""
import re
# re.search(正则，字符串)，如果搜到了返回Match Object匹配对象，没有搜到返回none
'''
line = "221.217.54.148 - - [03/Jun/2024:15:25:19 +0800] GET"
ip_regex = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"

result = re.search(ip_regex,line)

if result :
    print(result.group())
else:
    print("错误")
'''

def webUV(file_name):
    client_ip_list = []
    ip_regex = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
    with open(file_name,mode="r") as fobj:
        # line 类型为str
        for line in fobj:
            # 获取ip
            is_match = re.search(ip_regex,line)
            if is_match:
                client_ip = is_match.group()
                # 将获得的ip存到list中
                client_ip_list.append(client_ip)
    for ip in set(client_ip_list):
        print("客户端ip：%s，出现次数：%s"% (ip,client_ip_list.count(ip)))

if __name__ == '__main__':
    webUV(r"E:\python\utils\access_log")
